pulse-dashboard
Version:
A Next.js Dashboard application for real-time monitoring and historical analysis of Playwright test executions, based on playwright-pulse-report. This component provides the UI for visualizing Playwright test results and can be run as a standalone CLI too
3 lines (2 loc) • 8.8 kB
JavaScript
module.exports=[93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},24868,(e,t,r)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},91027,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),o=e.i(61916),s=e.i(74677),i=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),p=e.i(47587),c=e.i(66012),R=e.i(70101),h=e.i(26937),E=e.i(10372),x=e.i(93695);e.i(52474);var f=e.i(220),v=e.i(89171),g=e.i(24868),m=e.i(14747);async function w(){let e;console.log("[API /api/current-run] Raw process.env.PULSE_USER_CWD:",process.env.PULSE_USER_CWD),console.log("[API /api/current-run] Raw process.env.PULSE_REPORT_DIR:",process.env.PULSE_REPORT_DIR),console.log("[API /api/current-run] Current process.cwd() for Next.js server:",process.cwd());let t=process.env.PULSE_USER_CWD,r=process.env.PULSE_REPORT_DIR,a=process.cwd(),n=t&&""!==t.trim()?t.trim():a,o=r&&""!==r.trim()?r.trim():m.default.join(n,"pulse-report");console.log("[API /api/current-run] Effective baseDir determined:",n),console.log("[API /api/current-run] Effective reportDir determined:",o);let s=m.default.join(o,"playwright-pulse-report.json");console.log("[API /api/current-run] Attempting to read current run report from:",s);try{e=await g.default.readFile(s,"utf-8")}catch(t){console.error(`[API /api/current-run] ENTERED CATCH for fs.readFile. Path: ${s}. Error: ${t.message}. Code: ${t.code}. Stack: ${t.stack}`);let e=`Report file not found or unreadable at '${s}'. Base directory used: '${n}'. Error: ${t.message||"Unknown file read error."}${t.code?` (Code: ${t.code})`:""}`;return v.NextResponse.json({message:e,pathAttempted:s,baseDirUsed:n,errorCode:t.code||"N/A"},{status:"ENOENT"===t.code?404:500})}try{let t=JSON.parse(e);return t.metadata?t.metadata.userProjectDir=n:t.metadata={generatedAt:new Date().toISOString(),userProjectDir:n},v.NextResponse.json(t)}catch(t){console.error(`[API /api/current-run] ENTERED CATCH for JSON.parse. Path: ${s}. Error: ${t.message}. Stack: ${t.stack}`);let e=`Invalid JSON format in report file '${s}'. Error: ${t.message||"Unknown parsing error."}`;return v.NextResponse.json({message:e,pathAttempted:s},{status:400})}}e.s(["GET",()=>w],50822);var C=e.i(50822);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/current-run/route",pathname:"/api/current-run",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/current-run/route.ts",nextConfigOutput:"",userland:C}),{workAsyncStorage:P,workUnitAsyncStorage:y,serverHooks:N}=A;function S(){return(0,a.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:y})}async function T(e,t,a){A.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/current-run/route";v=v.replace(/\/index$/,"")||"/";let g=await A.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:m,params:w,nextConfig:C,parsedUrl:P,isDraftMode:y,prerenderManifest:N,routerServerContext:S,isOnDemandRevalidate:T,revalidateOnlyGenerated:_,resolvedPathname:b,clientReferenceManifest:O,serverActionsManifest:I}=g,U=(0,i.normalizeAppPath)(v),k=!!(N.dynamicRoutes[U]||N.routes[b]),D=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,P,!1):t.end("This page could not be found"),null);if(k&&!y){let e=!!N.routes[b],t=N.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await D();throw new x.NoFallbackError}}let j=null;!k||A.isDev||y||(j="/index"===(j=b)?"/":j);let $=!0===A.isDev||!k,q=k&&!$;I&&O&&(0,s.setManifestsSingleton)({page:v,clientReferenceManifest:O,serverActionsManifest:I});let H=e.method||"GET",M=(0,o.getTracer)(),L=M.getActiveScopeSpan(),F={params:w,prerenderManifest:N,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:$,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>A.onRequestError(e,t,a,n,S)},sharedContext:{buildId:m}},K=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(K,(0,d.signalFromNodeResponse)(t));try{let s=async e=>A.handle(W,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${H} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${v}`)}),i=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var o,l;let d=async({previousCacheEntry:r})=>{try{if(!i&&T&&_&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await s(n);e.fetchMetrics=F.renderOpts.fetchMetrics;let l=F.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=F.renderOpts.collectedTags;if(!k)return await (0,c.sendResponse)(K,B,o,F.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,R.toNodeOutgoingHttpHeaders)(o.headers);d&&(t[E.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=E.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,a=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=E.INFINITE_CACHE?void 0:F.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:T})},!1,S),t}},u=await A.handleResponse({req:e,nextConfig:C,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:_,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:i});if(!k)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",T?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),y&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let x=(0,R.fromNodeOutgoingHttpHeaders)(u.value.headers);return i&&k||x.delete(E.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||x.get("Cache-Control")||x.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(K,B,new Response(u.value.body,{headers:x,status:u.value.status||200})),null};L?await l(L):await M.withPropagatedContext(e.headers,()=>M.trace(u.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:T})},!1,S),k)throw t;return await (0,c.sendResponse)(K,B,new Response(null,{status:500})),null}}e.s(["handler",()=>T,"patchFetch",()=>S,"routeModule",()=>A,"serverHooks",()=>N,"workAsyncStorage",()=>P,"workUnitAsyncStorage",()=>y],91027)}];
//# sourceMappingURL=%5Broot-of-the-server%5D__06c6346e._.js.map